export default {
  data() {
    return {
      position: [],
      button: {},
      btn: '[]',
    }
  },
  // computed: {
  // 	pos() {
  // 		return JSON.stringify(this.position)
  // 	},
  // 	btn() {
  // 		return JSON.stringify(this.button)
  // 	}
  // },
  watch: {
    button: {
      handler(newVal) {
        this.btn = JSON.stringify(newVal)
      },
      deep: true,
    },
    show(newVal) {
      if (this.autoClose) return
      if (!this.button) {
        this.init()
        return
      }
      this.button.show = newVal
    },
    leftOptions() {
      this.init()
    },
    rightOptions() {
      this.init()
    },
  },
  created() {
    if (this.swipeaction.children !== undefined) {
      this.swipeaction.children.push(this)
    }
  },
  mounted() {
    this.init()
  },
  beforeDestroy() {
    this.swipeaction.children.forEach((item, index) => {
      if (item === this) {
        this.swipeaction.children.splice(index, 1)
      }
    })
  },
  methods: {
    init() {
      clearTimeout(this.swipetimer)
      this.swipetimer = setTimeout(() => {
        this.getButtonSize()
      }, 50)
    },
    closeSwipe(e) {
      if (!this.autoClose) return
      this.swipeaction.closeOther(this)
    },

    change(e) {
      this.$emit('change', e.open)
      let show = this.button.show
      if (show !== e.open) {
        this.button.show = e.open
      }
    },

    appTouchStart(e) {
      const { clientX } = e.changedTouches[0]
      this.clientX = clientX
      this.timestamp = new Date().getTime()
    },
    appTouchEnd(e, index, item, position) {
      const { clientX } = e.changedTouches[0]
      // fixed by xxxx 模拟点击事件，解决 ios 13 点击区域错位的问题
      let diff = Math.abs(this.clientX - clientX)
      let time = new Date().getTime() - this.timestamp
      if (diff < 40 && time < 300) {
        this.$emit('click', {
          content: item,
          index,
          position,
        })
      }
    },
    getButtonSize() {
      const views = uni.createSelectorQuery().in(this)
      views
        .selectAll('.uni-swipe_button-group')
        .boundingClientRect((data) => {
          let show = 'none'
          if (this.autoClose) {
            show = 'none'
          } else {
            show = this.show
          }
          this.button = {
            data,
            show,
          }
        })
        .exec()
    },
  },
}
